package com.wiselink.naver.productcatalog.response;

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.util.List;

/**
 * 卖家地址响应体
 */
@Getter
@Setter
@ToString
public class AddressBookResponse {
    /**
     * 地址簿列表
     * 주소록 목록
     */
    private List<AddressBook> addressBooks;
    /**
     * 当前页面
     * 현재 페이지
     */
    private Integer page;
    /**
     * 整页数
     * 전체 페이지 수
     */
    private Integer totalPage;

    @Getter
    @Setter
    @ToString
    public static class AddressBook {
        /**
         * 地址簿编号
         * 주소록 번호
         */
        private Long addressBookNo;
        /**
         * 名头
         * 이름
         */
        private String name;
        /**
         * 地址簿类型
         * 주소록 유형
         */
        private AddressType addressType;
        /**
         * 邮政编码
         * 우편번호
         */
        private String postalCode;
        /**
         * 默认地址
         * 기본 주소
         */
        private String baseAddress;
        /**
         * 详细地址
         * 상세 주소
         */
        private String detailAddress;
        /**
         * 全部地址
         * 전체 주소
         */
        private String address;
        /**
         * 联系人 1
         * 연락처 1
         */
        private String phoneNumber1;
        /**
         * 联系人 2
         * 연락처 2
         */
        private String phoneNumber2;
        /**
         * Location 是否包含
         * Location 포함 여부
         */
        private Boolean hasLocation;
        /**
         * 道路名地址与否
         * 도로명 주소 여부
         */
        private Boolean roadNameAddress;
        /**
         * 海外地址与否
         * 해외 주소 여부
         */
        private Boolean overseasAddress;
    }

    @Getter
    public enum AddressType {
        /**
         * 营业场所
         */
        REPRESENTATIVE("사업장", "营业场所"),
        /**
         * 追加营业场所
         */
        BUSINESS("추가 사업장", "追加营业场所"),
        /**
         * 常规
         */
        GENERAL("일반", "常规"),
        /**
         * 出库地
         */
        RELEASE("출고지", "出库地"),
        /**
         * 退货/交换纸
         */
        REFUND_OR_EXCHANGE("반품/교환지", "退货/交换纸"),
        /**
         * 物流中心出库地
         */
        LOGISTICS_CENTER_RELEASE("물류센터 출고지", "物流中心出库地"),
        /**
         * 物流中心 退货/交换纸
         */
        LOGISTICS_CENTER_REFUND_OR_EXCHANGE("물류센터 반품/교환지", "物流中心 退货/交换纸"),
        /**
         * 海外结算账户银行
         */
        OVERSEAS_BANK("해외 정산 계좌 은행", "海外结算账户银行");

        private final String kname;
        private final String cname;

        AddressType(String kname, String cname) {
            this.kname = kname;
            this.cname = cname;
        }
    }
}
